#ifndef STR_LIST_H
#define STR_LIST_H

#include <stdlib.h>

enum
{
	ERR_COMMON = -1,

	ERR_NOMEM = -2,
	ERR_INDEX = -3,

	ERR_NEQ = -4,
};

struct snode
{
	char data;
	struct snode * next;
};

typedef struct snode snode;
typedef struct snode li_str;

int li_str_create(li_str **);
int li_str_substr(const li_str *, size_t i, size_t j, li_str **);
int li_str_release(li_str *);

size_t li_str_len(const li_str *);

int li_str_assign(li_str **, const char *);
int li_str_copy(li_str **, const li_str *);
int li_str_eq(const li_str *, const li_str *);
int li_str_cat(li_str *, const li_str *);

int li_str_insert(li_str *, size_t i, const li_str *);
int li_str_del(li_str *, size_t i, size_t j);
int li_str_replace(li_str *, size_t i, size_t j, const li_str *);

int li_str_display(const li_str *);

#endif /* STR_LIST_H */

